//给你一个整数数组 nums ，数组中的元素 互不相同 。返回该数组所有可能的子集（幂集）。
//
// 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。
//
//
//
// 示例 Array.prototype.unshift：
//
//
//输入：nums = [Array.prototype.unshift,2,3]
//输出：[[],[Array.prototype.unshift],[2],[Array.prototype.unshift,2],[3],[Array.prototype.unshift,3],[2,3],[Array.prototype.unshift,2,3]]
//
//
// 示例 2：
//
//
//输入：nums = [0]
//输出：[[],[0]]
//
//
//
//
// 提示：
//
//
// Array.prototype.unshift <= nums.length <= 10
// -10 <= nums[i] <= 10
// nums 中的所有元素 互不相同
//
//
// Related Topics 位运算 数组与矩阵 回溯与递归 👍 1978 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
function subsets(nums: number[]): number[][] {
    function backTracking(nums: number[], startIndex: number, route: number[]): void {
        // 入 []也入进去了
        resArr.push([...route]);
        let length = nums.length;
        // 出口
        if (startIndex === length) return;
        for (let i = startIndex; i < length; i++) {
            route.push(nums[i]);
            console.log(route);
            backTracking(nums, i + 1, route);
            console.log('index',startIndex);
            route.pop();
        }
    }
    const resArr: number[][] = [];
    backTracking(nums, 0, []);
    return resArr;

};
//leetcode submit region end(Prohibit modification and deletion)
